package com.itheima.service;

import com.itheima.common.constant.RedisConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Set;


@Service
public class RedisService {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    /**
     * 将图片名称添加到资源集合
     * @param fileName 图片名称
     */
    public void addPicToResources(String fileName) {
        redisTemplate.opsForSet().add(RedisConstant.SETMEAL_PIC_RESOURCES, fileName);
    }

    /**
     * 将图片名称添加到数据库已使用集合
     * @param fileName 图片名称
     */
    public void addPicToDbResources(String fileName) {
        redisTemplate.opsForSet().add(RedisConstant.SETMEAL_PIC_DB_RESOURCES, fileName);
    }

    /**
     * 获取所有垃圾图片（资源集合与数据库集合的差值）
     * @return 垃圾图片名称集合
     */
    public Set<String> getGarbagePics() {
        return redisTemplate.opsForSet().difference(
                RedisConstant.SETMEAL_PIC_RESOURCES,
                RedisConstant.SETMEAL_PIC_DB_RESOURCES
        );
    }

    /**
     * 从资源集合中删除图片
     * @param fileName 图片名称
     */
    public void removePicFromResources(String fileName) {
        redisTemplate.opsForSet().remove(RedisConstant.SETMEAL_PIC_RESOURCES, fileName);
    }

    /**
     * 从数据库集合中删除图片
     * @param fileName 图片名称
     */
    public void removePicFromDbResources(String fileName) {
        redisTemplate.opsForSet().remove(RedisConstant.SETMEAL_PIC_DB_RESOURCES, fileName);
    }

    /**
     * 批量从资源集合中删除图片
     * @param fileNames 图片名称列表
     */
    public void removePicsFromResources(List<String> fileNames) {
        if (fileNames == null || fileNames.isEmpty()) {
            return;
        }
        fileNames.forEach(this::removePicFromResources);
    }
}